/**
 * 
 */
package com.org.javabody.ConcurrentHashMap;

import java.util.concurrent.ConcurrentHashMap;

/**
 * @author Administrator
 *
 */
public class ConcurrentHashMapDemo {
	private static ConcurrentHashMap<String, String> cacheMap = new ConcurrentHashMap<>();
	private static Integer i = 0;
	
    /**
     * 初始化缓存
     * 
     * @param account
     */
    private static void initCache(String account) {
        // 一般是进行数据库查询，将查询的结果进行缓存
        cacheMap.put(account, ""+i++);
    }
	
    
    /**
     * 拼接一个缓存key
     * 
     * @param account
     * @return
     */
    private static String getCacheKey(String account) {
        return Thread.currentThread().getId() + "-" + account;
    }

    /**
     * 移除缓存信息
     * 
     * @param account
     */
    public static void removeCache(String account) {
        cacheMap.remove(getCacheKey(account));
    }
    
    /**
     * 获取缓存的对象
     * 
     * @param account
     * @return
     */
    public static String getCache(String account) {

        account = getCacheKey(account);
        // 如果缓冲中有该账号，则返回value
        if (cacheMap.containsKey(account)) {
            return cacheMap.get(account);
        }
        // 如果缓存中没有该账号，把该帐号对象缓存到concurrentHashMap中
        initCache(account);
        return cacheMap.get(account);
    }

	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 initCache("用户1");
		 initCache("用户2");
		 initCache("用户3");
		 initCache("用户4");
		 initCache("用户5");
         removeCache("用户2");
         System.out.println(getCache("用户1"));
         System.out.println(getCache("用户2"));
         System.out.println(getCache("用户3"));
         System.out.println(getCache("用户4"));
         System.out.println(getCache("用户5"));
	}

}
